﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using DTO_MechSys;

namespace DAL_MechSys
{
    public class DALOrdem: DALBase
    {

        public void Excluir(int ordemPendenteID)
        {
            try
            {
                string storedProssidere = "sp_ExcluirOrdem";
                SqlParameter[] parameters =

                        {                    
                           new SqlParameter("@ordemid", ordemPendenteID)                                    
                        };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public void Inserir(DTOOrdem dtoOrdem)
        {
            try
            {
                string storedProssidere = "sp_InserirOrdem";
                
                SqlParameter[] parameters =
                
                { 
                   new SqlParameter("@ordempendenteid", dtoOrdem.OrdemPendenteID),
                   new SqlParameter("@valor", dtoOrdem.Valor),
                   new SqlParameter("@veiculoid", dtoOrdem.VeiculoID),
                   new SqlParameter("@vencimento", dtoOrdem.Vencimento),
                   //new SqlParameter("@dataentrega", dtoOrdem.DataEntrega),
                   new SqlParameter("@clienteid", dtoOrdem.ClienteID),                       
                   new SqlParameter("@formapagamento", dtoOrdem.FormaPagamentoID),
                   
                   new SqlParameter("@numeroparcelas", dtoOrdem.NumeroParcela),

                };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public void Atualizar(DTOOrdem dtoOrdem)
        {
            try
            {
                string storedProssidere = "sp_AtualizarOrdem";
                DateTime Entrega;

                SqlParameter[] parameters =
                
                { 
                   new SqlParameter("@ordemid", dtoOrdem.OrdemID),
                   new SqlParameter("@ordempendenteid", dtoOrdem.OrdemPendenteID),
                   new SqlParameter("@valor", dtoOrdem.Valor),
                   new SqlParameter("@veiculoid", dtoOrdem.VeiculoID),
                   new SqlParameter("@vencimento", dtoOrdem.VeiculoID),
                   //new SqlParameter("@dataentrega", dtoOrdem.DataEntrega),
                   new SqlParameter("@clienteid", dtoOrdem.ClienteID),                       
                   new SqlParameter("@formapagamento", dtoOrdem.FormaPagamentoID),
                   
                   new SqlParameter("@numeroparcelas", dtoOrdem.NumeroParcela),

                };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        //public DataTable BuscarOrdem()
        //{
        //    DataTable dataTable = new DataTable();
        //    dataTable.Columns.Add("OrdemID", typeof(int));
        //    dataTable.Columns.Add("VeiculoID", typeof(int));
        //    dataTable.Columns.Add("DataEntrada", typeof(DateTime));
        //    dataTable.Columns.Add("PrevisaoEntrega", typeof(DateTime));
        //    dataTable.Columns.Add("DataEntrega", typeof(DateTime));
        //    dataTable.Columns.Add("Resumo", typeof(string));
        //    dataTable.Columns.Add("Descricao", typeof(string));
        //    dataTable.Columns.Add("Prioridade", typeof(string));
        //    dataTable.Columns.Add("Nome", typeof(string));
        //    dataTable.Columns.Add("Veiculo", typeof(string));

        //    DataRow dataRow;
        //    try
        //    {
        //        string storedProssidere = "sp_BuscarOrdem";
        //        using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere))
        //        {
        //            while (sqlDataReader.Read())
        //            {
        //                dataRow = dataTable.NewRow();
        //                dataRow["OrdemID"] = (int)sqlDataReader["Descricao"];
        //                dataRow["VeiculoID"] = (int)sqlDataReader["Descricao"];
        //                dataRow["DataEntrada"] = DateTime.Parse((string)sqlDataReader["Descricao"]);
        //                dataRow["PrevisaoEntrega"] = DateTime.Parse((string)sqlDataReader["Descricao"]);
        //                dataRow["DataEntrega"] = DateTime.Parse((string)sqlDataReader["Descricao"]);
        //                dataRow["Resumo"] = (string)sqlDataReader["Descricao"];
        //                dataRow["Descricao"] = (string)sqlDataReader["Descricao"];
        //                switch ((int)sqlDataReader["Descricao"])
        //                {
        //                    case 1: dataRow["Prioridade"] = "Baixa"; break;
        //                    case 2: dataRow["Prioridade"] = "Média"; break;
        //                    case 3: dataRow["Prioridade"] = "Alta"; break;
        //                }
        //                dataRow["Nome"] = (string)sqlDataReader["Descricao"];
        //                dataRow["Veiculo"] = (string)sqlDataReader["Descricao"];


        //            }
        //        }
        //    }
        //    catch (SqlException)
        //    {
        //        throw;
        //    }
        //    return dataTable;
        //}

        public List<DTOOrdem> BuscarOrdemPendentes()
        {
            List<DTOOrdem> lstOrdem = new List<DTOOrdem>();

            try
            {
                string storedProssidere = "sp_BuscarOrdemPendentes";
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere))
                {
                    while (sqlDataReader.Read())
                    {

                        DTOOrdem dtoOrdem = CriarOrdem(sqlDataReader);

                        lstOrdem.Add(dtoOrdem);

                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstOrdem;
        }

        public List<DTOOrdem> BuscarOrdem()
        {
            List<DTOOrdem> lstOrdem = new List<DTOOrdem>();

            try
            {
                string storedProssidere = "sp_BuscarOrdem";
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere))
                {
                    while (sqlDataReader.Read())
                    {

                        DTOOrdem dtoOrdem = CriarOrdem(sqlDataReader);

                        lstOrdem.Add(dtoOrdem);

                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstOrdem;
        }
        public List<DTOOrdem> BuscarOrdem(int ClienteID)
        {
            List<DTOOrdem> lstOrdem = new List<DTOOrdem>();

            try
            {
                string storedProssidere = "sp_BuscarOrdem";
                SqlParameter[] parameters =                
                { 
                   new SqlParameter("@clienteid", ClienteID)

                };
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere, parameters))
                {
                    while (sqlDataReader.Read())
                    {

                        DTOOrdem dtoOrdem = CriarOrdem(sqlDataReader);

                        lstOrdem.Add(dtoOrdem);

                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstOrdem;
        }

        public List<DTOOrdem> BuscarOrdemPesquisa(string texto)
        {
            List<DTOOrdem> lstOrdem = new List<DTOOrdem>();

            try
            {
                string storedProssidere = "sp_BuscarOrdemPesquisaCarro";
                SqlParameter[] parameters =                
                { 
                   new SqlParameter("@string", texto)

                };
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere, parameters))
                {
                    while (sqlDataReader.Read())
                    {

                        DTOOrdem dtoOrdem = CriarOrdem(sqlDataReader);

                        lstOrdem.Add(dtoOrdem);

                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstOrdem;
        }

        public List<DTOOrdem> BuscarOrdemCarrosConcluidos()
        {
            List<DTOOrdem> lstOrdem = new List<DTOOrdem>();

            try
            {
                string storedProssidere = "sp_BuscarOrdemConcluidas";
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere))
                {
                    while (sqlDataReader.Read())
                    {

                        DTOOrdem dtoOrdem = CriarOrdem(sqlDataReader);

                        lstOrdem.Add(dtoOrdem);

                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstOrdem;
        }

        public List<DTOOrdem> BuscarOrdemCarrosPendentes()
        {
            List<DTOOrdem> lstOrdem = new List<DTOOrdem>();

            try
            {
                string storedProssidere = "sp_BuscarOrdemPendentes";
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere))
                {
                    while (sqlDataReader.Read())
                    {

                        DTOOrdem dtoOrdem = CriarOrdem(sqlDataReader);

                        lstOrdem.Add(dtoOrdem);

                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstOrdem;
        }

        public List<DTOOrdem> BuscarOrdemConcluidas()
        {
            List<DTOOrdem> lstOrdem = new List<DTOOrdem>();

            try
            {
                string storedProssidere = "sp_BuscarOrdemConcluidas";
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere))
                {
                    while (sqlDataReader.Read())
                    {

                        DTOOrdem dtoOrdem = CriarOrdem(sqlDataReader);

                        lstOrdem.Add(dtoOrdem);

                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstOrdem;
        }

        private DTOOrdem CriarOrdem(SqlDataReader sqlDataReader)
        {
            try
            {
                DTOOrdem dtoProduto = new DTOOrdem();

                if (!string.IsNullOrEmpty(sqlDataReader["OrdemID"].ToString()))
                {
                    dtoProduto.OrdemID = (int)sqlDataReader["OrdemID"];
                }

                if (!string.IsNullOrEmpty(sqlDataReader["ClienteID"].ToString()))
                {
                    dtoProduto.ClienteID = (int)sqlDataReader["ClienteID"];
                }

                if (!string.IsNullOrEmpty(sqlDataReader["VeiculoID"].ToString()))
                {
                    dtoProduto.VeiculoID = (int)sqlDataReader["VeiculoID"];
                }

                if (!string.IsNullOrEmpty(sqlDataReader["Vencimento"].ToString()))
                {
                    dtoProduto.Vencimento = DateTime.Parse(sqlDataReader["Vencimento"].ToString());
                }

                if (!string.IsNullOrEmpty(sqlDataReader["Data"].ToString()))
                {
                    dtoProduto.Data = DateTime.Parse(sqlDataReader["Data"].ToString());
                }
                if (!string.IsNullOrEmpty(sqlDataReader["Desconto"].ToString()))
                {
                    dtoProduto.Desconto = double.Parse(sqlDataReader["Desconto"].ToString());
                }
                if (!string.IsNullOrEmpty(sqlDataReader["FormaPagamentoID"].ToString()))
                {
                    dtoProduto.FormaPagamentoID = (int)(sqlDataReader["FormaPagamentoID"]);
                }

                if (!string.IsNullOrEmpty(sqlDataReader["FormaPagamento"].ToString()))
                {
                    dtoProduto.FormaPagamento = (string)(sqlDataReader["FormaPagamento"]);
                }

                if (!string.IsNullOrEmpty(sqlDataReader["NumeroParcelas"].ToString()))
                {
                    dtoProduto.NumeroParcela = (int)(sqlDataReader["NumeroParcelas"]);
                }
                if (!string.IsNullOrEmpty(sqlDataReader["Valor"].ToString()))
                {
                    dtoProduto.Valor = double.Parse(sqlDataReader["Valor"].ToString());
                }
                

                return dtoProduto;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public DTOOrdem PesquisarOrdem(int ordempendenteid)
        {
            DTOOrdem dtoOrdem = new DTOOrdem();

            try
            {
                string storedProssidere = "sp_BuscarOrdemPesquisa";

                SqlParameter[] parameters =                
                { 
                   new SqlParameter("@ordempendenteid", ordempendenteid)

                };
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere, parameters))
                {
                    while (sqlDataReader.Read())
                    {
                        dtoOrdem = CriarOrdem(sqlDataReader);
                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return dtoOrdem;
        }

        public List<DTOOrdem> PesquisarOrdemPendente(string descricao, int codigo)
        {
            List<DTOOrdem> lstOrdem = new List<DTOOrdem>();

            try
            {
                string storedProssidere = "sp_BuscarOrdemPendentes";

                SqlParameter[] parameters =                
                { 
                   new SqlParameter("@string", descricao),
                   new SqlParameter("@int", codigo)

                };
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere, parameters))
                {
                    while (sqlDataReader.Read())
                    {
                        DTOOrdem dtoOrdem = CriarOrdem(sqlDataReader);

                        lstOrdem.Add(dtoOrdem);
                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstOrdem;
        }

        public List<DTOOrdem> PesquisarOrdemConcluidas(string descricao, int codigo)
        {
            List<DTOOrdem> lstOrdem = new List<DTOOrdem>();

            try
            {
                string storedProssidere = "sp_BuscarOrdemConcluidas";

                SqlParameter[] parameters =                
                { 
                   new SqlParameter("@string", descricao),
                   new SqlParameter("@int", codigo)

                };
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere, parameters))
                {
                    while (sqlDataReader.Read())
                    {
                        DTOOrdem dtoOrdem = CriarOrdem(sqlDataReader);

                        lstOrdem.Add(dtoOrdem);
                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstOrdem;
        }
    }
}
